need to clean up the data - convert cols into numeric types before we can do this

Introduction

The NBA playoffs are defined by high-stakes matchups, rapidly shifting strategies, and the constant search for competitive advantages. As modern basketball increasingly emphasizes spacing and perimeter shooting, an important analytical question emerges: To what extent does three-point shooting influence playoff success compared to two-point efficiency? In this report, we analyze team-level and player-level data from the 2024–2025 NBA playoffs to investigate how shooting performance across different zones—such as corner threes, above-the-break threes, and shots in the paint—relates to win percentage and overall postseason success. We aim to determine whether three-point percentage is a stronger predictor of playoff performance than two-point percentage, and which specific shooting areas contribute most to winning. We theorize that three-point efficiency is a significantly stronger predictor of playoff success than two-point efficiency in modern day basketball and that specific high-value shooting zones—particularly corner and above-the-break threes—provide meaningful competitive advantages for teams in the 2024–2025 NBA playoffs.

Background - Will

Analysis - Group

nba_summary <- nba_24_25_playoff_shooting_data %>%
  group_by(Team) %>%
  summarise(
    total_3FGA = sum(`3 FGA`),
    total_2FGA = sum(`2 FGA`)
  ) %>%
  full_join(
    nba_24_25_playoff_team_data %>% select(Team, `WIN%`),
    by = "Team"
  )

nba_summary %>%
  mutate(`3_2_pointDifference` = total_2FGA - total_3FGA) %>%
  ggplot(aes(x = `3_2_pointDifference`, y = `WIN%`, color = Team)) +
  geom_smooth(aes(group = 1), method = "lm", color = "black", se = FALSE) +
  geom_point(size = 3) +
  labs(
    x = "3pt FGA - 2pt FGA",
    y = "Win Percentage",
    title = "Impact of 2-pt vs 3-pt Attempts on Playoff Win %"
  )
## `geom_smooth()` using formula = 'y ~ x'
## Warning: Removed 2 rows containing non-finite outside the scale range
## (`stat_smooth()`).
## Warning: Removed 2 rows containing missing values or values outside the scale range
## (`geom_point()`).

This chunk of code is aggregating player-level three-point shooting data into team-level averages for the 2024–2025 NBA playoffs. Because our goal is to analyze how three-point shooting affects team win percentage and playoff success, we need a single shooting percentage per team per zone, rather than having multiple rows per player.

team_zone_avgs <- team_zone_avgs %>%
  left_join(nba_24_25_playoff_team_data %>% select(Team, `WIN%`), by = "Team")
# Scatter plot with size proportional to WIN%
ggplot(team_zone_avgs, aes(x = Zone, y = FG_Percent, color = Team, size = `WIN%`)) +
  geom_point() +
  geom_text_repel(aes(label = Team), vjust = -0.5, size = 3, show.legend = FALSE) +
  labs(
    title = "NBA 2024-2025 Playoff Teams: 3PT FG% by Zone with WIN%",
    x = "3-Point Zone",
    y = "FG%",
    size = "Win %"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# This code builds on the previous team-level aggregation of three-point shooting percentages and creates a scatter plot visualizing 3PT shooting performance by zone for each playoff team, while also showing team success (win percentage) as the size of the points.((0.2%-Smallest sized point), (0.4% - Medium sized point) (0.6%-Large sized point))

After these graphing results we infer that the right corner three should be the strongest indicator to a teams success as both OKC and IND made it to the finals and both rank the highest on the right corner three FG%.

# Make sure team averages and WIN% are joined
team_zone_avgs <- nba_24_25_playoff_shooting_data %>%
  group_by(Team) %>%
  summarise(
    Left_Corner_3_FG = mean(as.numeric(`Left Corner 3. FG%`), na.rm = TRUE),
    Right_Corner_3_FG = mean(as.numeric(`Right Corner 3. FG%`), na.rm = TRUE),
    Above_the_Break_3_FG = mean(`Above the Break 3. FG%`, na.rm = TRUE)
  ) %>%
  left_join(nba_24_25_playoff_team_data %>% select(Team, `WIN%`), by = "Team")
## Warning: There were 8 warnings in `summarise()`.
## The first warning was:
## ℹ In argument: `Left_Corner_3_FG = mean(as.numeric(`Left Corner 3. FG%`), na.rm
##   = TRUE)`.
## ℹ In group 8: `Team = "LAC"`.
## Caused by warning in `mean()`:
## ! NAs introduced by coercion
## ℹ Run `dplyr::last_dplyr_warnings()` to see the 7 remaining warnings.
# Correlation tests for each zone
cor_left <- cor.test(team_zone_avgs$Left_Corner_3_FG, team_zone_avgs$`WIN%`)
cor_right <- cor.test(team_zone_avgs$Right_Corner_3_FG, team_zone_avgs$`WIN%`)
cor_above <- cor.test(team_zone_avgs$Above_the_Break_3_FG, team_zone_avgs$`WIN%`)
cor_left
## 
##  Pearson's product-moment correlation
## 
## data:  team_zone_avgs$Left_Corner_3_FG and team_zone_avgs$`WIN%`
## t = 1.9832, df = 14, p-value = 0.06732
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.03567938  0.78238802
## sample estimates:
##       cor 
## 0.4683087
cor_right
## 
##  Pearson's product-moment correlation
## 
## data:  team_zone_avgs$Right_Corner_3_FG and team_zone_avgs$`WIN%`
## t = 1.8329, df = 14, p-value = 0.08817
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.07135323  0.76811658
## sample estimates:
##       cor 
## 0.4399119
cor_above
## 
##  Pearson's product-moment correlation
## 
## data:  team_zone_avgs$Above_the_Break_3_FG and team_zone_avgs$`WIN%`
## t = 2.2866, df = 14, p-value = 0.03831
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  0.0347359 0.8082434
## sample estimates:
##       cor 
## 0.5214623
  • As you can see above there is a noticeable to strong correlation among all three zones with the above the break 3 having the strongest correlation. This disproves that the right corner three was the strongest indicator to a teams success as it had the smallest p-value.
#put data into SharedData so that graph can be interactive
nba_shared_data <- SharedData$new(nba_sum, key = ~Team, group = "NBA_Data")


nba_3v2FGM_plot <- nba_shared_data %>%
  ggplot(aes(x = `2 FGM`, y = `3 FGM`)) +
  geom_point(size = 3, aes(color = `WIN%`, text = paste("Team:", Team, "\nWin %:",`WIN%`, "\nPlayer:", Player))) + 
  scale_color_gradientn(
    colors = c("blue", "dodgerblue","deepskyblue", "white", "orange", "red", "darkred")
  ) + 
  geom_vline(xintercept = mean(nba_sum$`2 FGM`), linetype = "dashed", alpha = 0.5) +
  geom_hline(yintercept = mean(nba_sum$`3 FGM`), linetype = "dashed", alpha = 0.5) +
  labs(
    y = "3-Point FG Made", x = "2-Point FG Made", title = "3 vs 2 Point Field Goals Made, Win% Gradient in 24-25 Playoffs"
    )
## Warning in geom_point(size = 3, aes(color = `WIN%`, text = paste("Team:", :
## Ignoring unknown aesthetics: text
interactive <- ggplotly(nba_3v2FGM_plot, tooltip = c("text", "x", "y"))

team_filter <- filter_select(
  id = "team_select",
  label = "Select Team:",
  sharedData = nba_shared_data,
  group = ~Team,
  allLevels = TRUE
)

browsable(
  tagList(
    team_filter,
    interactive
  )
)
nba_24_25_playoff_team_data %>%
  ggplot(aes(x = `FGM`-`3PM`, y = `3PM`)) +
  geom_point(size = 3, aes(color = `WIN%`)) + 
  scale_color_gradientn(
    colors = c("blue", "dodgerblue","deepskyblue", "white", "orange", "red", "darkred")
  ) + 
  geom_text_repel(aes(label = Team), vjust = -0.5, size = 3, show.legend = FALSE) +
  geom_vline(aes(xintercept = mean(`FGM`-`3PM`)), linetype = "dashed", alpha = 0.5) +
  geom_hline(aes(yintercept = mean(`3PM`)), linetype = "dashed", alpha = 0.5) +
  labs(
    y = "3-Point FG Made", x = "2-Point FG Made", title = "3 vs 2 Point Field Goals Made by Team in 24-25 Playoffs"
    )

After these graphs we can infer that 3 point shooting alone does not directly correlate to teams achieveing a high winning percentage in the playoffs. The charts show teams are most efficient when shooting the most 2 and 3 point field goals, which makes sense at that directly means they are scoring more points throughout the game. There is definetly an appearance of teams doing well that average more 2s than the average. However, it appears there is little to no success for teams that shoot well below the average amount of 3’s in a game, while there are teams, such as the Boston Celtics (2023-24 NBA Champions), who shoot a much lower average of 2 point field goals, while being able to maintain a high winning percentage.

#Looking at the correlation between 2 and 3 point shots
cor_2v3 <- cor.test(nba_24_25_playoff_team_data$FGM - nba_24_25_playoff_team_data$`3PM`, nba_24_25_playoff_team_data$`3PM`)
cor_2vWin <- cor.test(nba_24_25_playoff_team_data$FGM - nba_24_25_playoff_team_data$`3PM`, nba_24_25_playoff_team_data$`WIN%`)
cor_3vWin <- cor.test(nba_24_25_playoff_team_data$`3PM`, nba_24_25_playoff_team_data$`WIN%`)

#Looking at the correlation between 2 and 3 point shots
cor_2v3
## 
##  Pearson's product-moment correlation
## 
## data:  nba_24_25_playoff_team_data$FGM - nba_24_25_playoff_team_data$`3PM` and nba_24_25_playoff_team_data$`3PM`
## t = -2.2172, df = 14, p-value = 0.04367
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.80266134 -0.01885438
## sample estimates:
##        cor 
## -0.5097951
#Looking at the correlation between 2 point shots and Winning
cor_2vWin
## 
##  Pearson's product-moment correlation
## 
## data:  nba_24_25_playoff_team_data$FGM - nba_24_25_playoff_team_data$`3PM` and nba_24_25_playoff_team_data$`WIN%`
## t = 1.961, df = 14, p-value = 0.07009
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.04092242  0.78034303
## sample estimates:
##       cor 
## 0.4641994
#Looking at the correlation between 3 point shots and Winning
cor_3vWin
## 
##  Pearson's product-moment correlation
## 
## data:  nba_24_25_playoff_team_data$`3PM` and nba_24_25_playoff_team_data$`WIN%`
## t = 0.68861, df = 14, p-value = 0.5023
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.3457253  0.6209882
## sample estimates:
##       cor 
## 0.1809993
cor_2vLoss <- cor.test(nba_24_25_playoff_team_data$FGM - nba_24_25_playoff_team_data$`3PM`, 1 - nba_24_25_playoff_team_data$`WIN%`)
cor_3vLoss <- cor.test(nba_24_25_playoff_team_data$`3PM`, 1 - nba_24_25_playoff_team_data$`WIN%`)

#Looking at the correlation between 2 point shots and Loosing
cor_2vLoss
## 
##  Pearson's product-moment correlation
## 
## data:  nba_24_25_playoff_team_data$FGM - nba_24_25_playoff_team_data$`3PM` and 1 - nba_24_25_playoff_team_data$`WIN%`
## t = -1.961, df = 14, p-value = 0.07009
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.78034303  0.04092242
## sample estimates:
##        cor 
## -0.4641994
#Looking at the correlation between 3 point shots and Loosing
cor_3vLoss
## 
##  Pearson's product-moment correlation
## 
## data:  nba_24_25_playoff_team_data$`3PM` and 1 - nba_24_25_playoff_team_data$`WIN%`
## t = -0.68861, df = 14, p-value = 0.5023
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
##  -0.6209882  0.3457253
## sample estimates:
##        cor 
## -0.1809993

The highest correlation received is a correlation between the amount of 2 and 3 point shots in the NBA playoffs. Thus, for the most part teams tend to favor one type of shot. This can possibly affect the other correlations but for now we will continue to compute. The correlation tests actually show that making more 2 point field goals has a higher correlation to winning percentage than 3 point field goals. Inversely, it has a larger impact on the loss % of teams as well. This data could have been slightly skewed by the winning Oklahoma City Thunder (OKC) who shot more two point shots than any other team, and teams such as the Los Angeles Lakers (LAL) and Miami Heat (MIA) who shot a large majority of their shots from the 3 point range in their short, loosing playoff stints. However, since OKC won the Championship, any many other winning teams fell beyond the 2-point mean, this is almost certainly a telling sign for last year’s playoffs that making 2 point field goals had a greater impact.

Discussion - Alexander

There appear to be pockets of high-win-rate players in all four quadrants of the dataset, which makes sense because basketball is a team sport with varied offensive strategies. However, many of the most successful performances cluster in the upper-right quadrant, indicating that high volumes of both 2-Point Field Goals Made and 3-Point Field Goals Made contribute strongly to playoff success. This aligns with the second graph (Impact of 2-pt vs. 3-pt Attempts on Playoff Win %), which shows that higher volumes of 2-Point Field Goal Attempts relative to 3-Point FGA are generally associated with a higher win percentage. The team-specific graph further supports this finding: nearly all of the highest-winning teams (CLE, MIL, MIN, IND, LAC, OKC) had above-average 2-Point Field Goals Made. Taken together, the three graphs suggest that successful teams depend on both 3-point and 2-point production, with 2-Point FGM playing a particularly important role. Maintaining a balanced and effective scoring profile across both areas appears vital for maximizing playoff win percentage. In our initial thesis, we stated that higher 3-point efficiency would be more important than 2-point efficiency. Our results show a more nuanced conclusion: although both areas matter, teams generally need significantly more 2-Point FGA than 3-Point FGA to perform well in the playoffs. We also found that the right-corner three is the most impactful three-point zone, though all 3-point shooting zones show a strong correlation with win percentage. This partially supports our original thesis but highlights that 2-point volume and consistency carry substantial weight as well. For future analysis, it would be interesting to run a similar study using a full regular-season dataset to see whether these trends remain consistent outside the playoffs. Another extension could examine timing—specifically, whether clutch 3-pointers produce stronger correlations with success than regular 2-point attempts. Understanding how late-game shot selection affects win probability could reveal additional insights beyond overall scoring volume.

Reference